Embodiments herein generally relate to systems that reprogram firmware, and more particularly to methods and systems of reprogramming firmware on integrated circuit programmable memories. With embodiments herein, glyphs are scanned in and the data obtained from the glyphs is installed into the programmable memories to reprogram them.
With respect to programmable memories, U.S. Patent Publication 2003/0110369 (the complete disclosure of which is incorporated herein by reference) explains that traditional firmware includes machine instructions stored in non-volatile memory, which is typically read only memory (ROM) or flash memory. Such ROMs may include, for example EEPROMs (electrically erasable/programmable ROM), SEEPROMs (serial EEPROM) field programmable gate arrays (FPGAs), and/or a wide variety of other read only memory types.
Thus, traditional firmware is a combination of software and hardware, although the term “firmware” is also used to refer to the software itself that is written with the intention of storing it in non-volatile memory. For example, on the Intel Architecture for Personal Computers (IA-PC), system firmware is commonly referred to as the BIOS (Basic Input/Output System), which is software alone.
A typical use for firmware is to provide machine instructions that control a data processing system when it is powered up from a shut down state, before volatile memory has been tested and configured. Firmware is also commonly used to reinitialize or reconfigure a data processing system after defined hardware events and/or to handle certain system level events like system interrupts.
The process of bringing a data processing system to its operating state from a powered down state is commonly known as bootstrapping, booting up, or the boot process. Bootstrapping typically begins with one or more processors in a data processing system. Each processor tests its internal components and interfaces. After the initial processor testing, initialization of system level resources commences. In multiprocessor systems, a single bootstrap processor (BSP) may be selected to handle initializing remaining processors and to handle the system level initialization. System level initialization typically includes procedures for checking memory integrity, identifying and initializing other resources in the data processing system, and loading an operating system (OS) into memory.
Conventional firmware is typically written using a low level language (e.g., assembly language) that provides direct access to processor hardware. Thus, firmware is typically closely tied to the processor architecture of the system for which the firmware is designed. Due in part to the architecture-specific nature of the firmware, the underlying processor architecture is typically reflected in system level resources, which are initialized, configured and serviced by the firmware, in conventional data processing systems.